package com.beinhospital_sw21_h2_05.beinhospitalsw21h205.mapper;

import com.beinhospital_sw21_h2_05.beinhospitalsw21h205.entity.Patient;
import com.beinhospital_sw21_h2_05.beinhospitalsw21h205.entity.UserTable;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

@Mapper
public interface UserMapper {

    /**
     * 根据用户名查询用户
     *
     * @param Username 用户名
     * @return 用户名
     */
    @Select("select Username from UserTable where Username=#{Username}")
    String getUsername(@Param("Username") String Username);

    /**
     * 根据用户名查询用户密码
     *
     * @param Username 用户名
     * @return 用户密码
     */
    @Select("select Password from UserTable where Username=#{Username}")
    String getPassword(@Param("Username") String Username);

    /**
     * 根据用户名查询用户ID
     *
     * @param Username 用户名
     * @return 用户ID
     */
    @Select("select UserID from UserTable where Username=#{Username}")
    String getId(@Param("Username") String Username);

    /**
     * 检查用户名是否存在
     *
     * @param username 用户名
     * @return 存在返回1，不存在返回0
     */
    @Select("select count(*) from UserTable where Username = #{username}")
    int flag(String username);

    /**
     * 插入用户信息
     *
     * @param user 用户信息对象
     */
    @Insert("insert into UserTable(Username,Password) values(#{Username},#{Password})")
    void insertUser(UserTable user);

    /**
     * 根据用户对象查询用户ID
     *
     * @param user 用户信息对象
     * @return 用户ID
     */
    @Select("select UserID from UserTable where Username = #{Username}")
    int getUserId(UserTable user);

    /**
     * 插入病人信息
     *
     * @param patient 病人信息对象
     */
    @Insert("insert into Patient(UserID,PatientName,Gender,Age) values (#{UserID},#{PatientName},#{Gender},#{Age})")
    void insertPatient(Patient patient);

    /**
     * 根据用户名查询用户角色
     *
     * @param username 用户名
     * @return 用户角色
     */
    @Select("select Role from UserTable where Username = #{username}")
    Integer getRole(String username);
}
